/** 
 *	项目独有的 初始化上传空间, 图片显示, 删除等功能方法
 **/
var fileoperator = {};

fileoperator.imgType = 'img';
fileoperator.imgExt = 'JPEG|JPG|BMP|GIF|PNG|jpeg|jpg|bmp|gif|png';
fileoperator.executableExt = 'EXE|BAT|VBS|CMD|HTM|LOG|REG|LNG|INI|BAT|exe|bat|vbs|cmd|htm|log|reg|lng|ini|bat';

var defaultImgListContainerClass = 'divUploadImageShow';	// 图片列表容器类名

/**
 * 初始化上传图片按钮
 * id-按钮控件的id, 只所以加上这个参数, 是因为原来的项目中 一个页面有多个上传按钮存在的缘故
 * btnValue-上传按钮的显示文字
 * returnInputId-返回的图片id放置的input控件id
 * imgShowContainerId - 显示图片的容器id
 * htmlPageType - 页面的状态, 只有在new、edit值时才会在图片上添加上删除事件, 否则只有查看事件
 */
fileoperator.initUploadfile = function(btnId,fileUploadReturnValueContainter,imgShowContainerId,htmlPageType, fileType){
	//定义绑定上传按钮事件
	var button = $('#' + btnId);
	if(verify.isNull(htmlPageType) || htmlPageType == 'view'){
		return;
	}
	new AjaxUpload(button, {
		action: '/demo/filegags/singleUpload',
		name: 'file',// 更改上传的文件名
		autoSubmit:true,
		type:'POST',
		responseType:'json',
		data: {},
		onSubmit : function(file , ext){
			if(verify.isNull(ext)){
				alert("文件上传失败");
				return false;
			}
			if(verify.isNull(file)){
				alert("文件上传失败");
				return false;
			}
			 //①验证上传文件格式
			if(verify.isNull(fileType)){
				//无限制-随意上传--不允许上传可执行文件
				var regStr = '^('+ fileoperator.executableExt +')$';
				var reg = new RegExp(regStr); 
				if(reg.test(ext)){
					alert('您上传的文件格式不正确,不可上传可执行文件');
					return false;
				}
			}else{
				if(fileType == fileoperator.imgType){//图片格式
					if(!fileoperator.validateExt(ext, fileoperator.imgExt)){
						return false;
					}
					/**
					 *	②设置上传参数
					 **/
					this.setData({fileType: fileType});
				}
			}
			//2.验证是否重复上传文件
			var fileUpload1ReturnValue = $('#'+fileUploadReturnValueContainter).val();
			if(fileUpload1ReturnValue.indexOf("{{@}}"+file) != -1){
				alert("该文件已上传，请重新选择");
				return false;
			}
			//改变上传按钮的内容
			button.val('文件上传中ing...');
		},
		onComplete : function(file,data){
			if(data.notice){
				// 1- 存放返回的文件名到fileUploadReturnValueContainter中
				var fileUpload1ReturnValue = $('#'+fileUploadReturnValueContainter).val();
				if(verify.isNull(fileUpload1ReturnValue)){
					$('#'+fileUploadReturnValueContainter).val(data.message);
				}else{
					$('#'+fileUploadReturnValueContainter).val(fileUpload1ReturnValue+'|'+data.message)
				}
				// 2- 显示图片
				//fileoperator.addImgToShowDiv(data.message,imgShowContainerId, fileUploadReturnValueContainter, htmlPageType);
			}else{
				alert(data.message);
			}
			this.enable();
		}
	});
}

/**
 * 校验格式方法
 * desExt： 要校验的格式
 * extStr： 只允许上传的格式
 */
fileoperator.validateExt = function(desExt, extStr){
	var regStr = '^('+ extStr +')$';
	var reg = new RegExp(regStr); 
	if(!(desExt && reg.test(desExt))){
		alert('您上传的文件格式不正确,请选择 '+ extStr +' 格式文件');
		return false;
	}
	return true;
}

/**
 * 根据业务id初始化已经存在的业务图片
 * containerId - 装显示图片的容器id
 * businessId - 请求影像文件的业务id
 * businessValuesContainerId - 装 文件名.id|文件名.id|文件名.id|文件名.id   格式拼接起来的实际隐藏域控件id
 * htmlPageType - 页面的状态, 只有在new、edit值时才会在图片上添加上删除事件, 否则只有查看事件
 */ 
fileoperator.initialBusinessImage = function(containerId,businessId, businessValuesContainerId,htmlPageType){
	if(verify.isNull(containerId) || verify.isNull(businessId)){
		return null;
	}
	$.ajax({
		url : server.contextPath + '/filegags/getFileList',
		type : 'post',
		data : {'businessId':businessId},
		dataType : 'json',
		beforeSend : function() {
		},
		success : function(data) {
			if (data.result) {
				var lihtml = '';
				var fileUploadReturnValue = '';
				$.each(data.message.list,function(index,item){
					lihtml += '<img src="'+item.fileName+'" onmousedown="fileoperator.operateImg(event,this,\'' + businessValuesContainerId + '\',\'' + htmlPageType + '\')"/>';
					if(verify.isNull(fileUploadReturnValue)){
						fileUploadReturnValue += item.remark;
					}else{
						fileUploadReturnValue += '|' + item.remark;
					}
				});
				$('#' + containerId).html(lihtml).addClass(defaultImgListContainerClass);
				$('#' + businessValuesContainerId).val(fileUploadReturnValue);
			} else {
				alert(data.message);
			}
		},
		error : function() {
			alert('操作发生错误, 请刷新页面重新尝试或者联系管理员进行解决.');
		}
	});
}

/**
 * 将刚上传的图片添加到图片展示div中
 * imgUrl - 图片绝对路径
 * imgShowContainerId - 显示图片的容器id
 * businessValuesContainerId - 装 文件名.id|文件名.id|文件名.id|文件名.id   格式拼接起来的实际文件id
 * htmlPageType - 页面的状态, 只有在new、edit值时才会在图片上添加上删除事件, 否则只有查看事件
 */ 
fileoperator.addImgToShowDiv = function(imgUrl, imgShowContainerId,businessValuesContainerId,htmlPageType){
	alert(imgUrl)
	var lihtml = '';
	if(verify.isImageFormat(imgUrl)){
		lihtml = '<img src="' + server.contextPath + '/files/temp/' + imgUrl + '" onmousedown="fileoperator.operateImg(event,this,\'' + businessValuesContainerId + '\',\'' + htmlPageType + '\')"/>';
	}else{
		lihtml = imgUrl.substring(imgUrl.lastIndexOf('{{@}}')+5) + '&nbsp;&nbsp;&nbsp;&nbsp;';
	}
	if(verify.isNull($('#' + imgShowContainerId).html())){
		$('#' + imgShowContainerId).addClass(defaultImgListContainerClass);
	};
	$('#' + imgShowContainerId).append(lihtml)
}

/**
 * 图片点击事件, 左键查看, 右键删除
 * event - 系统默认的事件
 * obj  - 被点击的图片对象
 * businessValuesContainerId - 盛放 业务值对应的文件id列表容器id
 * htmlPageType - 页面的状态, 只有在new、edit值时才会在图片上添加上删除事件, 否则只有查看事件
 */
fileoperator.operateImg = function(event,obj,businessValuesContainerId,htmlPageType){
	// 右键
	if(event.button=='2' && (htmlPageType == 'new' || htmlPageType == 'edit')){  
		fileoperator.delImg(obj,businessValuesContainerId);
	}else if(event.button=='0'){
		//左键
		fileoperator.openImgModalBox($(obj).attr('src')); 
	}  
}

/**
 * 大图显示单个图片弹出框, 宽高默认为100%
 * imgUrl 图片绝对路径
 */
/*fileoperator.openImgModalBox = function(imgUrl){
	// body内容
	dialog = bootbox.dialog({
	    title : '图片显示',
	    message : '<img src="'+imgUrl+'" style="width:100%;"/>',
	    className:'',
	    boxCss:{'width':'100%','height':'100%'}
	});
}*/
/**
 * 使用谷歌浏览器进行显示
 */
fileoperator.openImgModalBox = function(imgUrl){
	var name = "图片显示";                       //网页名称，可为空;
    var iWidth = 800;                         //弹出窗口的宽度;
	var iHeight= 600;                        //弹出窗口的高度;
	//window.screen.height获得屏幕的高，window.screen.width获得屏幕的宽
	var iTop = (window.screen.height-100-iHeight)/2;       //获得窗口的垂直位置;
	var iLeft = (window.screen.width-100-iWidth)/2;        //获得窗口的水平位置;
	var obj = window.open(imgUrl,'','height='+iHeight+',innerHeight='+iHeight+',width='+iWidth+',innerWidth='+iWidth+',top='+iTop+',left='+iLeft+',toolbar=no,menubar=no,scrollbars=auto,resizeable=no,location=no,status=no');
	setTimeout(function(){ obj.document.title = name; }, 500);
}

/**
 * 删除单张图片方法
 * obj - 图片对象
 * businessValuesContainerId - 盛放 业务值对应的文件id列表容器id
 **/
fileoperator.delImg = function(obj,businessValuesContainerId){
	var delflag = window.confirm('确实要删除该张图片么,此操作不可恢复, 点 “是” 继续删除, 点 “否” 取消。 ');
	if(!delflag){
		return;
	}
	//将对应的图片url从隐藏的input中删除
	// 1- 获得 业务值对应的文件id列表容器id中的值
	var fileUploadReturnValue = $('#' + businessValuesContainerId).val();
	if(verify.isNull(fileUploadReturnValue)){
		return;
	}
	// 2- 取得图片名 
	var preurl = $(obj).attr('src');	//图片绝对url路径
	var imgname = preurl.substring(preurl.lastIndexOf('/')+1); // 图片文件名
	// 3-从 隐藏input中 将imgname 删除掉~~
	var fileUploadReturnValueArray = fileUploadReturnValue.split('|');
	var newFileUploadReturnValue = '';
	for(var i=0;i<fileUploadReturnValueArray.length;i++){
		if(imgname == fileUploadReturnValueArray[i]){
			continue;
		}else{
			if(verify.isNull(newFileUploadReturnValue)){
				newFileUploadReturnValue = fileUploadReturnValueArray[i];
			}else{
				newFileUploadReturnValue += '|' + fileUploadReturnValueArray[i];
			}
		}
	}
	// 3-新值赋给隐藏input
	$('#'+businessValuesContainerId).val(newFileUploadReturnValue);
	// 4-将该图片元素去除掉
	$(obj).remove();
}
 
